package com.wxh.producerconsumer.synchronizedmethod;

/**
 * @ClassName: Shop
 * @Description: 商店
 * @Author wxh
 * @Date: 2021/12/7 10:31
 * @Version V1.0.0
 * @Since 1.8
 */
public class Shop {
    /**
     *  面包个数
     */
    private int breadNum = 0;

    /**
     *  生产面包
     */
    public synchronized void producerBread(){
        if(breadNum < 10){
            breadNum++;
            System.out.println(Thread.currentThread().getName() + ":开始生产第" + breadNum + "个面包");
            // 唤醒消费者线程
            notify();
        }else {
            try {
                // 大于10，就不生产了，告诉生产者等待一下
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 消费面包
     */
    public synchronized void consumerBread(){
        if(breadNum > 0){
            System.out.println(Thread.currentThread().getName() + ":开始消费第" + breadNum + "个面包");
            breadNum--;
            // 唤醒生产者线程
            notify();
        }else{
            try {
                // 小于0，消费者就不消费了，告诉消费者等待一下
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
